home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Caml Light 0.7 / examples / compress / esbit.ml < prev    next >
Text File  |  1995-06-01  |  748b  |  25 lines

  1. type tampon = { mutable val: int; mutable nbits: int };;
  2. let tampon = { val = 0; nbits = 0 };;
  3. let initialise () = tampon.val <- 0; tampon.nbits <- 0;;
  4. let écrire_bit sortie bit =
  5.   tampon.val <- tampon.val lor (bit lsl tampon.nbits);
  6.   tampon.nbits <- tampon.nbits + 1;
  7.   if tampon.nbits >= 8 then begin
  8.     output_char sortie (char_of_int tampon.val);
  9.     tampon.val <- 0;
  10.     tampon.nbits <- 0
  11.   end;;
  12.  
  13. let finir sortie =
  14.   if tampon.nbits > 0 then
  15.     output_char sortie (char_of_int tampon.val);;
  16. let lire_bit entrée =
  17.   if tampon.nbits <= 0 then begin
  18.     tampon.val <- int_of_char(input_char entrée);
  19.     tampon.nbits <- 8
  20.   end;
  21.   let res = tampon.val land 1 in
  22.   tampon.val <- tampon.val lsr 1;
  23.   tampon.nbits <- tampon.nbits - 1;
  24.   res;;
  25.